subroutine initbicg1g(mt,m,phif,srcf,r20)
    use bicgmg
    use mtblmg,     only : mbmg, axb1g
    implicit none
    
    integer             :: m
    real(8),pointer    :: phif(:,:,:)
    real(8),pointer    :: srcf(:,:,:)
    real(8)             :: r20

    integer                 :: l, k
    real(8)                 :: b20
    type(mbmg)::mt
!
    calpha=1
    crho=1
    comega=1 

    call axb1g(mt, m,phif,aphi1g)

    r20=0
    b20=0
    do k=1,nz
    do l=1,nxy
        vr1g(l,k)=srcf(l,k,m)-aphi1g(l,k)
        vr01g(l,k)=vr1g(l,k)
        vp1g(l,k)=0
        vv1g(l,k)=0
        r20=r20+vr1g(l,k)*vr1g(l,k)
        b20=b20+srcf(l,k,m)*srcf(l,k,m)
    enddo
    enddo
    r20=sqrt(r20)
    b20=sqrt(b20)
    
    return
end subroutine
